<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		
		
		<script>
//			1.原型是什么:原型是一个叫prototype的对象,每一个构造函数中都有一个原型对象
//			2.原型的作用是什么:原型可以用来共享方法/属性(只有通过同一个构造函数创建出来的对象才能共享到)
//			一般情况下，我们公共属性定义到构造函数中（当然有些时候我们也可以放在prototype原型对象中），公共的方法我们放到原型对象中
			//同一个构造函数可以创建多个不同的实例对象，这些实例对象可以有共同的方法，
			//由于每new一个实例对象都要开辟一个内存地址来储存这些相同的方法所以就会造成内存资源的浪费,所以构造函数原型prototype就很好的解决了这个问题
			//每一个构造函数里面都有一个原型对象，通过原型分配的函数是所有对象所共享的。
			//原型对象会开辟一个内存地址，存贮定义在prototype原型对象上的方法。这样通过同一个构造函数创建出来的对象/子实例对象就可以共享这个prototype中的方法
			function star (name,age){
				this.uname=name;
				this.uage=age;
				this.sing=function(){
					console.log("唱歌")
				}
				
			}
			//我们把eat这个方法存贮到star构造函数中的prototype原型对象中,实现方法的共享
			star.prototype.eat=function(){
				console.log("吃")
			}
			var ldh =new star("刘德华",18);
			var zxy=new star("张学友",20);
			ldh.eat();
			zxy.eat();
			//至于为什么创建出来的对象能能使用构造函数中prototype对象中的方法，就是因为每个对象中都有一个_proto_属性指向构造函数中的原型对象
		</script>
	</body>
</html>
